-2
4

4 回答 4

5

您以strncat()错误的顺序提供参数。第一个参数是要附加到的字符串;第二个参数是要附加的字符串。如所写,您正在尝试将输入添加string到常量 string "Hello",这是不行的。您需要将其编写为两个单独的字符串操作。

使用该std::string课程将为您节省很多痛苦。

于 2012-09-16T23:30:09.717 回答
4

由于您使用的是 C++,因此我建议您避免使用 C char*++ std::string。如果需要传入 a char*,则 string 类有一个c_str()方法以 a 的形式返回字符串const char*

使用字符串类时的连接就像"Hello " + "World!".

#include <iostream>
#include <string>

const int MaxLength = 599;

int main() {
    std::string name;

    std::cout << "Enter a name: ";
    std::cin >> name;

    if (name.length() > MaxLength) {
        name = name.substr(0, MaxLength);
    }

    // These will do the same thing.
    // std::cout << "Hello " + name << endl;
    std::cout << "Hello " << name << endl;

    return 0;
}

这并不能完全回答您的问题,但我想它可能会有所帮助。

于 2012-09-16T23:36:31.657 回答
3

更好的编写方法是使用字符串类并完全跳过字符。

#include <iostream>
#include <string>

int main(){
    std::string name;
    std::cout<<"Enter name: ";
    std::getline(std::cin, name);
    std::string welcomeMessage = "Hello " + name;
    std::cout<< welcomeMessage;
    // or just use:
    //std::cout << "Hello " << name;
    return 0;
}
于 2012-09-17T09:24:21.127 回答
1
char * strncat(char * destination, const char * source, size_t num);

所以你的来源和目的地是错误的。

于 2012-09-16T23:29:01.823 回答