2016-10-01 4 views
-3

Я пытаюсь прочитать файл с именем elect12.csv elect12.csv sample in Excel и получить значения в последнем столбце (состоянии) и сравнить его с введенной пользователем переменной (stateCode). Тем не менее, каждый раз, когда я запускаю свою программу, я не могу предложить пользователю повторно ввести значение. Как я могу заставить это работать? Благодарю.Как я могу попросить моего пользователя повторно использовать, если они используют значение за пределами таблицы значений, которую я хочу использовать?

// Прочитано файл популярных голосов ifstream pVotesFile ("elect12.csv");

for (int i = 0; i < statecount; i++) 
{ 

    if(pVotesFile.is_open()) 
    { 
     cout << "Enter state code: "; 
     cin >> stateCode; 
     while (pVotesFile >> obama >> romney >> other >> total >> state) 
     { 
      if (stateCode == state) 
      { 
       statePoints = ((double)(obama - romney)/total) * 100; 
       stateTotal += statePoints; 
      } 
      else 
      { 
       cout << "Enter state code: "; 
       cin >> stateCode; 
       stateTotal = 0; 
      } 
    } 
} 

Если картинка происходит идти вниз когда-нибудь в будущем, вот то, что первые несколько строк файла выглядит следующим образом:

"795696 1255925 22717 2074338 AL"

" 122640 164676 13179 300495 АК "

"1025232 1233654 40368 2299254 AZ"

" 394409 647744 27315 10694 68 AR»

"7854285 4839958 344304 13038547 CA"

+0

Также - Может кто-нибудь, пожалуйста, проверьте, правильно ли я читаю файл с ifstream? (Извините за то, что вы такой хаос хаоса) –

+1

Нет подсказки, если вы читаете это правильно или нет, потому что я не знаю, как выглядит файл. Если это действительно csv, вы не разбираете запятые. – user4581301

+0

Редактируйте свой вопрос и добавьте образец этого файла. Хостинг от сайта - плохая идея. Во-первых, вся информация, относящаяся к вопросу, должна содержаться в вопросе. Как только эта ссылка устареет, вопрос становится бесполезным. Во-вторых, это Интернет. Загрузка некоторого случайного файла с какого-нибудь случайного сайта за тупой. – user4581301

ответ

1
"795696 

У вас есть дополнительные метки quoatation в файле. В результате cin >> integer_value; потерпит неудачу, так как встречает текст. Вы должны изменить данные, как так

795696 1255925 22717 2074338 AL 
122640 164676 13179 300495 AK 
1025232 1233654 40368 2299254 AZ 
394409 647744 27315 1069468 AR 
7854285 4839958 344304 13038547 CA 

Используйте cout, чтобы убедиться, что вы на самом деле что-то читал:

if (pVotesFile.is_open()) 
{ 
    cout << "Enter state code: "; 
    cin >> stateCode; 
    while (pVotesFile >> obama >> romney >> other >> total >> state) 
    { 
     cout << obama << ", " << romney << ", " << other << ", " << total << ", " 
        << state << "\n"; 
     if (stateCode == state) 
     { 
      cout << "state found\n"; 
     } 
    } 
} 

С другой стороны, сохранить данные, как есть, то пропустите первую " цитату отметка.