什么是最好的连接方式?
const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);
它给出了错误。正确的方法应该是什么?
谢谢。
什么是最好的连接方式?
const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);
它给出了错误。正确的方法应该是什么?
谢谢。
我认为正确的方法是:
std::string msg = std::string("Init() Failed ") + initError + "\n";
std::cout<<msg;
或者
std::cout<<"Init() Failed "<<initError<<"\n";
您的大问题是您正在混合数据类型。使用其中一个char
和关联的函数或wchar
和关联的函数。如果您需要混合它们,请使用转换功能。这比尝试将浮点数传递给需要字符串的函数没有意义。(编译器应该能够捕捉到这两个问题,因为 的声明wprintf
类似于int wprintf(const wchar_t *, ...)
。)
另一个更次要的问题是,printf
这样的函数不是打印一般字符串的正确函数,因为如果字符串中有任何百分号,您将获得未定义的行为。使用printf("%s",...)
或puts(...)
或相关的功能。
而且,由于这是 C++,所以最好使用std::string
该类。它并不完美,但比 C 风格的字符串要好得多。
此外,告诉我们错误是什么会有所帮助。您甚至没有告诉我们这是编译器错误还是运行时错误。