Я пишу программу, которая будет угадывать слова, взятые из большого текстового файла. Один шаг - ввод данных пользователя для определения длины строки.программа не может пройти «cin»
изменения: добавлен полный код, сделал некоторые изменения
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int i(0),n(0),counter(0),limit(0);
char words[60000][30];
int initarray() {
int length(0);
string line;
char temp;
ifstream wordlist ("text.txt");
if (wordlist.is_open())
{
while (wordlist.good())
{
getline (wordlist,line);
length=line.length();
for (n=0;n!=length;n++)
{
temp=line.at(n);
words[i][n]=temp;
}
i++;
counter++;
}
}
else
{
cout<<"file not opened";
}
wordlist.close();
return 0;
}
int selectlength()
{
int length;
bool shorter(false),longer(false);
cout <<"length of word"<<endl;
cin >> length
limit=counter;
counter=0;
for (i=0;i<limit;i++){
for (n=0;n!=length;n++){
if (words[i][n]=='\0')
{
shorter=true;
break;
}
}
if (words[i][length+1] != '\0')
{
longer=true;
}
if (longer==true || shorter==true)
{
i--;
}
}
return 0;
}
int printresults(){
for (i=0;i!=counter;i++){
for (n=0;n<=20;n++){
cout << words[i][n];
}
cout <<endl;
}
return 0;
}
int main() {
initarray();
selectlength();
printresults();
return 0;
}
но моя проблема происходит, когда программа, которая отлично компилируется, попадает в «Cin» часть для чтения ввода пользователя для длины. Когда я вхожу в любое число и нажимаю Enter, ничего не происходит. Программа все еще работает и просто продолжает вводить данные неопределенно. Любая помощь? Может ли это иметь какое-либо отношение к моему использованию ifstream раньше в приграме, хотя и в другой функции?
Вышеприведенный код, очевидно, либо не является тем, что вы используете, либо неполным: 'cin.get (length,)'. Вставьте фактический код или тестовый пример. – wilx
[Не компилируется] (http://ideone.com/09dry) –
Правильное использование будет 'cin >> length'. – chris