0

テキストファイルがあり、文字ごとに読み取ります。しかし、これらの文字を連結して、文字の配列を持ちたいと思います。

私が理解できる限り、strcat を使用する必要があります。しかし、strcat を使用できるように、ファイルから読み取った char を const char* に変換できませんでした。

char * strcat ( char * destination, const char * source );

デバッガーで、chr に「Bad Ptr」があることがわかります。親切に手伝ってくれませんか?

ifstream infile;
infile.open( "Gmv.txt", ifstream::in);

char result[1000]; 

while (infile.good())
{       
    character = infile.get();
    const char * chr = reinterpret_cast<const char *>(character);
    strcat(result, chr);
}   
infile.close();
4

2 に答える 2

2

ファイルが 999 文字以下であると仮定すると、これは機能するはずです (エラー チェックは追加されません)。strcat を使用する必要はありません。実際のところ、ここで strcat を使用するのはばかげています。

ifstream infile;
infile.open( "Gmv.txt", ifstream::in);

char result[1000]; 
int i = 0;
while (infile.good())
{       
    result[i] = infile.get();
    ++i;
}

result[i] = 0; // Add the '\0' at the end of the char array read.

infile.close();

strcat は、2 番目のパラメーターとして 0 ('\0') で終了する char 配列を取ります。char は 0 で終了していません。したがって、不良ポインタ エラーが発生します。

ところで、これまでの時間を短くすることができます

while (infile)
    result[i++] = infile.get();
于 2013-04-07T10:51:28.053 に答える
1

C++ に以下がある場合に、配列を文字列として使用する理由std::string:

std::string result;
char ch;

while (infile >> ch)
    result += ch;
于 2013-04-07T10:53:40.180 に答える