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