小编Wer*_*nze的帖子

如何将long int转换为char

#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;


HANDLE hPort = CreateFile("COM2",
GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DCB dcb;

bool writebyte(char*data)
{
    DWORD byteswritten;
    if (!GetCommState(hPort,&dcb))
    {
        printf("\nSerial port can't be open\n");
        return false;
    }

    dcb.BaudRate = CBR_9600;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;

    if (!SetCommState(hPort,&dcb))
        return false;

    bool retVal = WriteFile(hPort,data,1,&byteswritten,NULL);

    return retVal;
}

int ReadByte()
{

    int Val;
    BYTE Byte;
    DWORD dwBytesTransferred;
    DWORD dwCommModemStatus;
    if (!GetCommState(hPort,&dcb))
    return 0;

    SetCommMask(hPort,EV_RXCHAR | EV_ERR);
    WaitCommEvent (hPort,&dwCommModemStatus,0);
    if (dwCommModemStatus & EV_RXCHAR)
    ReadFile …
Run Code Online (Sandbox Code Playgroud)

winapi

1
推荐指数
1
解决办法
304
查看次数

可以同时杀死的任务等效物

我想在后台运行一个长期运行的opeartion.要求是:

  1. 该操作应该与调用线程异步运行.

  2. 调用线程可以等待操作完成并获得其结果

  3. 超时后,应立即中止操作.

我本来会使用任务,但我知道没有机制可以杀死任务死冷.取消令牌不适合我,我只会因为未知原因而卡住任务 - (一个bug),这是一个故障安全机制.针说如果任务被卡住,请求取消没有用.BackgroundWorker也是如此.

有没有比在调用线程和后台线程之间使用共享对象更精细的东西?

c# multithreading task-parallel-library

1
推荐指数
1
解决办法
258
查看次数

O_APPEND打开文件后写入文件时出错 O_CREATE

我已经在O_APPEND中打开了一个名为“ pranav”的文本文件| O_CREAT模式如下图所示:

     #include<unistd.h>
     #include<fcntl.h>
     #include<stdio.h>
     main()
     {
     //FILE Descriptor fdes
     /*Open file pranav.txt in write-only mode,
      O_CREAT creates file if it does not exist*/
      int fdes = open("pranav.txt",O_APPEND | O_CREAT );
      //Error returns -1
      if(fdes!=-1)
      {
           //To write on file
             if((write(fdes,"Pranav",6))== -1)
             write(2,"File_Writing_Error",18);
             //To print on screen
             else
             write(1,"Done",4);
      }
      else
      {
            //Print "error" on screen
               write(2,"File_Opening_Error",18);
      }
      close(fdes);
       }
Run Code Online (Sandbox Code Playgroud)

在O_APPEND模式下,它执行write(2,“ File_Writing_Error”,18); 语句,因此无法在文件上写入“ Pranav”,但是如果我使用O_WRONLY模式,则不会发生此错误并且程序可以成功运行

c operating-system

1
推荐指数
1
解决办法
3712
查看次数

使用const外部值作为非const外部值是否安全?

请参阅下面的代码和结果:

foo.c的:

const int extern_const = 1;
Run Code Online (Sandbox Code Playgroud)

main.c中

#include <stdio.h>

extern int extern_const;

int main(void)
{
    printf("before: %d\n", extern_const);
    extern_const = 2;
    printf("after : %d\n", extern_const);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译和结果:

$ gcc -shared -fpic foo.c -o libfoo.so
$ gcc main.c -L. -lfoo  -o test
$ LD_LIBRARY_PATH=`pwd` ./test
before: 1
after : 2
Run Code Online (Sandbox Code Playgroud)

我声明了一个const int变量extern_const,它驻留在一个共享库中libfoo.so.在main.c中,我声明extern_const只是extern int没有extern const int,并将值从1更改为2. 这是安全有效的吗?

执行结果显示替换仍然有效.我听说覆盖const值会引发未定义的行为,事实上,当我一次编译foo.c和main.c(没有创建共享库)时,程序实际上在第二个printf之前以分段错误结束.

我想知道的是接下来的事情:

  1. 一般来说,更改外部库中任何const变量的值是否安全?
  2. 如果没有,GCC/GNU工具包是否安全?
  3. 如果1.和2.都错了,我是否得到了未定义行为的幸运案例?
  4. 如果1.或2.是正确的,那么有/无库的情况会有什么不同?

c gcc const shared-libraries extern

1
推荐指数
1
解决办法
141
查看次数

while循环要求输入直到使用C的ctrl-d

我想创建一个 while 循环,不断要求用户输入,直到用户ctrl-d退出。我怎样才能正确地做到这一点?我现在正在使用这个:

 while (1)
    {
        printf("Enter host name: ");
        fgets(user_input, 1000, stdin);
    }
Run Code Online (Sandbox Code Playgroud)

这是可行的,除非用户必须点击ctrl-c来结束程序。我想不断询问用户输入,直到他/她点击ctrl- d。我怎样才能做到这一点?

c

1
推荐指数
1
解决办法
1万
查看次数

需要从current-date()xquery中删除时区

我是xquery的新手,其中一个要求是通过查询xDB生成每日报告.

如果我硬编码日期,我可以从xDB生成报告,但如果我尝试从系统中读取当前日期,我在报告中没有得到任何值.

代码片段:

let $day := fn:current-date()
let $hours := ( '00', '01', '02', '03', '04', 
        '05', '06', '07', '08', '09', 
        '10', '11', '12', '13', '14', 
        '15', '16', '17', '18', '19', 
        '20', '21', '22', '23' )

let $ddhh := for $i in $hours return concat($day,"T",$i)
let $title := concat("Average Time By Documents in Hour on ", $day)
Run Code Online (Sandbox Code Playgroud)

在报告中:(" 2015-06-08Z小时文件平均时间"..)

硬编码值和current-date()函数之间的差异是时区"Z".如何摆脱时区"Z".我只想在变量$ day中说"2015-06-08"而不是"2015-06-08Z"

提前致谢.

xquery

1
推荐指数
2
解决办法
3833
查看次数

非空终止char数组的std :: string_view大小的差异

我正在使用不同编译器的std :: string_view,并注意到每个编译器在使用非null终止的char数组初始化std :: string_view时会打印出不同的大小.

似乎每个编译器在打开优化时打印出正确的大小,但在优化关闭时打印出错误的大小(GCC除外,它在两种情况下都打印出正确的大小).

我的问题是:为什么会这样?

码:

// test.cpp

#include <iostream>

#ifdef __MINGW32__
#include <experimental/string_view>
#elif _MSC_VER
#include <string_view>
#endif

int main()
{
    const char foo[3]{ 'f','o','o' };

#ifdef __MINGW32__
    std::experimental::string_view str_v{ foo };
#elif _MSC_VER
    std::string_view str_v{ foo };
#endif

    std::cout << sizeof(foo) << " " << str_v.size() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出:Visual C++ 19.00.24619.0

3 5 // cl /Zi /std:c++latest /EHsc /nologo /W4 test.cpp
3 3 // cl /O2 /std:c++latest /EHsc /nologo /W4 test.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ string-view c++17

1
推荐指数
1
解决办法
677
查看次数

如何在C++中保存输入字符串?

#include<iostream>
#include<string>
#include<fstream>
using namespace std;

int main()
{
  ofstream wysla;
  wysla.open("wysla.txt", ios::app);
  int kaput;
  string s1,s2;
  cout<<"Please select from the List below"<<endl;
  cout<<"1.New entry"<<endl;
  cout<<"2.View Previous Entries"<<endl;
  cout<<"3.Delete an entry"<<endl;
  cin>>kaput;
  switch (kaput)
  {
    case 1:

      cout<<"Dear diary,"<<endl;
      getline(cin,s1);
      wysla<<s1;
      wysla.close();

      break;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我试图保存一串字符但是不可能,例如,当我使用getline时,当我使用cin时,只保存第一个单词时,没有任何内容保存在文本文件中.我想保存整个条目我该怎么办?

c++

0
推荐指数
1
解决办法
2092
查看次数

Hashtable是否实现了Map接口中的每个方法?

由于在Java中实现接口的类必须定义接口中的每个方法以避免被声明为抽象,我想知道以下内容:

当我创建一个实例化Hashtable对象的程序时,为什么我不需要在Map接口中定义每个方法?我没有明确定义的方法是自动创建的"存根"吗?

java hashtable

0
推荐指数
1
解决办法
1059
查看次数

防止程序在其他机器上运行

我在我的Ubuntu机器上运行了一个linux可执行文件.我想授予用户访问权限以执行程序,但我不希望复制该程序.

我正在考虑制作一个简单的crypter应用程序,它将在运行时解密程序并从内存中运行它.

这可行吗?

c linux

0
推荐指数
1
解决办法
104
查看次数

字符串中未声明的字符串

我正在学习c ++继承,这里有一个问题.如果我在main.cpp文件中创建这个简单的代码,它将没有任何问题.

但是当我在头文件中分隔文件时,它将无法正常工作,它会给我一些错误.

这是名为book.h的头文件的代码

 #ifndef BOOK_H
 #define BOOK_H

 class book
{
 private:
 string name;

 public:
 book(string n = "default") : name(n) {};
 ~book() {};
 void printname();
};

#endif
Run Code Online (Sandbox Code Playgroud)

这里是book.cpp的代码,我在这个文件中定义了这个类的功能.

#include <iostream>
#include <Windows.h>
#include <string>
#include "book.h"

using namespace std;

void book::printname()
{
 cout << name << endl;
 return;
}
Run Code Online (Sandbox Code Playgroud)

最后是main.cpp文件:

#include <iostream>
#include <Windows.h> 
#include <string>
#include "book.h"

using namespace std;

 int main()
{
 system("color 0A");
 book programing("c++");
 cout << "the name of the book is ";
 programing.printname();

 system("pause"); …
Run Code Online (Sandbox Code Playgroud)

c++ class

0
推荐指数
1
解决办法
359
查看次数

Flutter 在 VSCode 解释包中作为 URI

我正在尝试从 VSCode 开始使用颤振。我想我已经完成了所有正确的设置:

1) 在 VS code 上下载了 flutter 和 dart 和 codeRunner 的扩展

2)下载flutter SDK并添加路径

3)在没有医生的情况下运行 flutter doctor 并且没有错误 在此处输入图片说明

完成所有设置后,我尝试单击“运行代码”,并收到错误消息:“dart”未被识别为内部或外部命令。在阅读其他在线帖子后,我认为这是因为我只在我的路径中添加了 flutter SDK 而没有添加 dart SDK,所以我也在我的路径中添加了 dart SDK。

从那里,我再次尝试运行代码并收到以下错误:

lib/main.dart: Warning: Interpreting this as package URI, 'package:tranfer_app/main.dart'.
../../flutter/packages/flutter/lib/src/material/animated_icons.dart:9:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui show Paint, Path, Canvas;
       ^
../../flutter/packages/flutter/lib/src/material/animated_icons.dart:10:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
       ^
../../flutter/packages/flutter/lib/src/material/app.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui;
       ^
../../flutter/packages/flutter/lib/src/material/app_bar_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' …
Run Code Online (Sandbox Code Playgroud)

dart visual-studio-code flutter flutter-test

0
推荐指数
1
解决办法
2846
查看次数