在C++中获取多行输入
Getting multiple lines of input in C++
第一行包含一个整数n(1≤n≤100)。以下n行中的每一行包含一个单词。所有单词都由小写拉丁字母组成,长度从1到100个字符不等。(来源:http://codeforces.com/problemset/problem/71/A)
你将如何从给定n的用户那里获得输入?我试着使用while循环,但它不起作用:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i;
while (i<=n) {
cin>>i ;
i++;
}
}
您可能想要这样的东西:
#include <iostream>
int main() {
int n;
cin>>n;
int theInputNumbers[n];
for(int i = 0; i<n; ++i) {
cin >> theInputNumbers[i];
}
}
您的循环与您的需求相去甚远。你所写的是极其错误的,以至于我除了学习循环、变量和输入的基础知识之外,无法提供其他建议。你需要的帮助超出了一个简单的问题/答案的范围,你应该考虑买一本书,并从头读到尾。考虑阅读C++的编程原理和实践
以下是一个与您的问题要求近似的工作示例。我将文件输入和输出作为练习留给您。我还使用了C++11的前后std::字符串成员。在旧版本中,您必须通过数组索引进行访问。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
int totalWords;
cin >> totalWords;
stringstream finalOutput;
for (int i = 0; i < totalWords; ++i){
string word;
cin >> word;
if (word.length() > 10){
finalOutput << word.front() << (word.length() - 2) << word.back();
}else{
finalOutput << word;
}
finalOutput << endl;
}
cout << endl << "_____________" << endl << "Output:" << endl;
cout << finalOutput.str() << endl;
}
话虽如此,让我给你一些建议:
有意义地命名变量。在上面的for循环中,"int i"是一个常见的习语,"i"代表索引。但通常情况下,您希望避免将i用于其他任何事情。用totalWords或类似的词代替n。
此外,请确保在访问所有变量之前对其进行初始化。当你第一次进入while循环时,i没有定义值。这意味着它可以包含任何内容,事实上,您的程序可以执行任何操作,因为它是未定义的行为。
顺便说一句:你为什么在你的例子中读一个整数i?你为什么要增加它?这样做的目的是什么?如果你从用户那里读取输入,他们可以键入0,然后你递增1,将其设置为1…下一次迭代可能他们会键入-1,然后你将其递增1,并将其设置成0…然后他们可以键入10001451,你递增1并将其设置为10001452…你看到这里的逻辑有问题吗?
似乎您正在尝试使用i作为迭代总数的计数器。如果要执行此操作,请不要也不要将用户的输入读取到i中。这完全破坏了目的。使用一个单独的变量,如我的示例所示。
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何从用户那里获取输入并将其存储在向量中?
- 获取通过重定向传入的输入文件的名称?
- Cryptopp:获取密码输入的填充字符串
- 从格式化输入操作中获取读取字符数
- 如何获取用户输入的算术表达式,如 5-8+7*4-8+9 或 1+5?
- 我无法从 C# 获取 PInvoke 的输入参数以C++ DLL 以用作 IntPtr 的输出
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 用于获取枚举值的用户输入
- C++如何使用表达式获取用户输入?
- 从 cin 获取 c++ 中结构中多个枚举的输入
- 代码在执行之前终止,并且没有从用户那里获取输入
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 推荐一种在未输入获取行分隔符时引发异常的方法?
- 输入获取线的结尾
- 线程不刷新数据,无法从标准输入获取所有数据
- 如何从同一输入获取两个输入 (C++)
- 在C++中静态地将用户输入获取到类中
- 在使用C++字符串时对特定输入获取bad_alloc
- 使用MPI程序,所有进程都从用户输入获取数据