0

このコードが最初の文字なしで文字を出力するのはなぜですか?? ocalhostの代わりに言いますlocalhost。助けてくれてありがとう。

#include <winsock2.h>
#include <mysql/mysql.h>
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;

int main ()  {    
int b = 0;
char * pch;
int stringLength = 0;
char textRead[50];
ifstream infile("config.ini", ios::in | ios::binary);            
if(!infile) {
            cout << "ERROR: config.ini not found!\n";
            system("pause");
            exit(0);
}

infile >> textRead;
stringLength = strlen(textRead);
pch=strchr(textRead,'"');
while(pch != NULL) {
          infile.seekg(pch-textRead-1);
          infile >> textRead;
          pch = strchr(pch+1,'"');
}
cout << textRead;
infile.close();
4

2 に答える 2

0

while ループ内で次のように呼び出します。

  infile >> textRead;
  pch = strchr(pch+1,'"');

2行目で実行しようとすると、最後に抽出された単語ではstrchrなく、以前の文字列を参照しています。textRead

残念ながら、あなたが実際に何をしようとしているのかを推測することはできないため、修正方法について提案することはできません.

于 2010-11-18T19:27:32.487 に答える
0

config.iniあなたがそれを提供しなかったので、の内容を推測していますが、 は問題なくifstream読み取れているようです。cout << textRead << endl;あなたの後にチェックを入れinfile >> textRead;てください。これは私が使用しているものですconfig.ini

localhost = "foo"

seekgただし、友達と のあなたの論理は壊れているようです。seekg解析をサポートするために使用することを意図したものではありません(あなたの場合、引用符をスキップします)。pch-textRead-1必要に応じてファイルの大きなチャンクをスキップすることを意図しているため、読み込みに時間を無駄にすることはありません。正直なところ、最初の文字が引用符の場合は -1 になる可能性があるため、何をしているのかわかりません。

もう1つのことはinfile >> textRead;、行を読み取らず、単語を読み取り、先頭の空白を破棄することです。

念のため省略しました

#include <winsock2.h>
#include <mysql/mysql.h>
#include <windows.h>

必要ないからです。

于 2010-11-18T19:27:51.490 に答える