Я пытаюсь прочитать символ текстового файла по символу. Я использую строку для чтения файла. Мой код для чтения файла ниже:не может установить std :: string, равную нулевому индексу другой std :: string
int main()
{
std::ifstream data;
data.open("C:\\Users\\Christian Dean\\Documents\\CodeLiteWorkspace\\CplusplusPractice\\src\\test_file.qz");
std::string data_str;
int counter = 0;
data >> data_str;
for(int i = 0; i < data_str.length(); i++)
{
std::string tokenizer = data_str[i];
if (tokenizer == "output")
{
counter++;
}
}
std::cout << counter << std::endl;
data.close();
return 0;
}
, как вы можете видеть, в моем цикл я устанавливаю строку tokenizer
равной индекса нулевой строки data_str
. Однако при компиляции он показывает ошибку
`main.cpp:27:37: error: invalid conversion from 'char' to ''const char*' [-fpermissive].
Я действительно не знаю, как еще я могу прочитать символ файла по символу. Я попытался установить tokenizer
как тип char
. Но когда я запускаю программу, она говорит, что переменная counter
равна 0
. Таким образом, очевидно, что переменная tokenizer
типа char
не работала.
Содержание текстового файла ниже, если это необходимо:
output: "Hello World
Опишите, что вы хотите сделать, так как я не вижу, как чтение символа по символу когда-либо приводит к строке 'output' в' tokenizer', если 'tokenizer' содержит только один символ за раз. – Yakk
Чтобы развернуть комментарий Якка, прогуливая вход по одному символу за раз, вы никогда не сможете увидеть целое слово. Если вместо этого вы извлекли строки до тех пор, пока 'data.eof()' не вернётся, вы будете ходить каждое слово в файле, которое вы могли бы сравнить и считать против – nate
. Не уверен, что я неправильно понимаю, что задумал его комментарий, но бойтесь loop to eof. Подробнее здесь: http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – user4581301