2013-08-31 4 views
-1

У меня есть текстовый файл, в котором есть # в нем ... Это выглядит примерно так.строка синтаксического анализа для C++

#Stuff 
1 
2 
3 
#MoreStuff 
a 
b 
c 

Я пытаюсь использовать зЬй :: строка :: найти() функцию, чтобы получить позиции # и затем идти оттуда, но я не знаю, как на самом деле код этого.

Это моя попытка:

int pos1=0; 
while(i<string.size()){ 
    int next=string.find('#', pos1); 
    i++;} 
+1

Что именно вы пытаетесь читать? – chris

+0

Вход пользователя, указанный в этом формате. Я использовал getline для хранения их ввода в строке – Dark

+0

«Я использовал getline для хранения их ввода в строке» - это было время, когда вы впервые разбирали строку строки за строкой ... почему бы не искать '# «Подписать там? – LihO

ответ

0

Это трудно сказать, из вашего вопроса, что вы имеете в виду «позицию», но похоже, что вы пытаетесь сделать что-то вроде этого:

#include <fstream> 
#include <iostream> 

int main() 
{ 
    std::ifstream incoming{"string-parsing-for-c.txt"}; 
    std::string const hash{"#"}; 
    std::string line; 
    for (auto line_number = 0U; std::getline(incoming, line); ++line_number) 
    { 
     auto const column = line.find(hash); 
     if (std::string::npos != column) 
     { 
      std::cout << hash << " found on line " << line_number 
         << " in column " << column << ".\n"; 
     } 
    } 
} 

... или, возможно, это:

#include <fstream> 
#include <iostream> 

int main() 
{ 
    std::ifstream incoming{"string-parsing-for-c.txt"}; 
    char const hash{'#'}; 
    char byte{}; 
    for (auto offset = 0U; incoming.read(&byte, 1); ++offset) 
    { 
     if (hash == byte) 
     { 
      std::cout << hash << " found at offset " << offset << ".\n"; 
     } 
    } 
} 
0

Вот один я сделал некоторое время назад ... (в C)

int char_pos(char c, char *str) { 
    char *pch=strchr(str,c); 
    return (pch-str)+1; 
} 

Порт это C++ и там вы идете! ;)

  • Если: не найдено, то возвращается отрицательный.
  • Else: «Позитивный», первый Return Чара найдено положение (первый матч)
Смежные вопросы