程序无法通过"cin"
program cannot get past "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]==' ')
{
shorter=true;
break;
}
}
if (words[i][length+1] != ' ')
{
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"部分以读取用户输入的长度时,就会发生。当我输入任何数字并按回车键时,没有任何反应。该程序仍在运行,并且只是无限期地接受输入。有什么帮助吗?它是否与我在 prigram 前面使用 ifstream 有任何关系,尽管功能不同?
你在
selectlength()
中有一个无限循环。外部for
循环不会终止,因为您正在减少循环内部的i
(循环计数器)(这不是一个好主意,也许找到更好的方法)。
我认为您不会在输入文件的最后一行终止。 longer
和shorter
都是真实的,limit
永远不会达到。在循环中对此进行测试:
if (words[i][0] == ' ')
break;
这至少会停止无限循环,并允许你重新审视你的逻辑(不清楚longer
和shorter
将用于什么。
一些一般性评论:
- 将跟踪语句放在问题区域内可以帮助您识别问题。
- 您将详细了解C++ if 而不是您使用
char words[x][y]
std::vector<std::string> words;
if
语句中的布尔值更容易阅读,如下所示:if (longer || shorter)
比你拥有它的方式更容易理解。- 你总是返回 0 - 而是让函数
void
。
您还在selectlength()
内部将全局counter
设置为 0,但稍后在 printresults()
中仍然需要它,因此不会获得任何输出。
相关文章:
- 为什么我的两个 cin 语句没有在程序结束时运行?
- C++程序在将 int 与 cin 一起使用时有效,但不能使用字符串
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- 我的程序在到达"cin << ans1 "时崩溃
- 程序在 cin - C++ 后停止
- 为什么程序在 cin 之后跳过 cin.get()?
- CIN 和 COUT 如何在以下程序中工作
- 在GLFW应用程序中,std::cin的行为很奇怪
- 为什么我的应用程序即使我的应用程序也关闭,即使我有cin.get();
- 将字符串从BASH脚本(C 程序)推入CIN
- C 使用CIN.Get()暂停此程序
- 使用 cin 读取大型输入时程序冻结
- 如何使用CIN.FAIL()杀死程序
- 为什么 std::cin.clear() 在这个简单的程序中不起作用?
- 如何将可编辑的预定义字符串写入 C++ 控制台应用程序中的 cin 输入运算符
- 使该程序停止的STD :: CIN是什么
- C 程序在CIN之后突然结束
- 使用 crontab 运行 C++ 程序,"cin"不会等待我的输入
- 我的程序中的 CIN 无法正常工作。我该如何解决它?
- CIN C++程序崩溃