-2
4

4 に答える 4

5

引数をstrncat()間違った順序で指定しています。最初の引数は追加する文字列です。2 番目の引数は追加する文字列です。string書かれているように、入力を定数 stringに追加しようとしていますが"Hello"、これは問題です。これは、2 つの別個の文字列操作として記述する必要があります。

クラスを使用するstd::stringと、多くの悲しみが解消されます。

于 2012-09-16T23:30:09.717 に答える
4

C++ を使用しているため、代わりに使用を避けchar*て使用することをお勧めしstd::stringます。を渡す必要がある場合char*、文字列クラスにはc_str()、文字列を の形式で返すメソッドがあります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

これを記述するより良い方法は、string クラスを使用して char を完全にスキップすることです。

#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 に答える