为什么这段代码打印出char,没有第一个字符?它说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();
答案 0 :(得分:0)
在你的while循环中你打电话:
infile >> textRead;
pch = strchr(pch+1,'"');
当您尝试在第二行中运行strchr
时,它仍然会返回您在textRead
中的上一个字符串,而不是最近提取的字词。
不幸的是,我无法推断出你真正想要做的事情,所以我无法提供有关如何修复它的建议。
答案 1 :(得分:0)
我猜测config.ini
的内容,因为你没有提供它,但看起来ifstream
看起来很好。在cout << textRead << endl;
之后加infile >> textRead;
进行检查。这就是我用于config.ini
:
localhost = "foo"
你与seekg
和朋友的逻辑似乎已经破裂了。 seekg
并不意味着用于支持解析(在您的情况下,跳过引号);它意味着在需要时跳过大块文件,这样你就不会浪费时间阅读它。老实说,我不确定你在做什么,因为pch-textRead-1
可能是-1,如果第一个字符是报价。
另一件事是infile >> textRead;
不读取一行,它读取一个单词,并丢弃前导空格。
为了记录,我省略了
#include <winsock2.h>
#include <mysql/mysql.h>
#include <windows.h>
因为不需要它。