- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个程序应该如何工作:
Enter 4 words:
this is bad
Bad input.
和
Enter 4 words:
hello you love it
Good input.
我是如何尝试的:
#include <iostream>
#include <string>
using namespace std;
int main(void) {
cout << "Enter 4 words:" << endl;
string a, b, c, d;
cin >> a >> b >> c >> d;
}
它在行尾读取输入,我不知道如何将它限制在一行。你能指出我应该使用什么功能吗?我将非常感谢您的每一个回答。
谢谢大家!
最佳答案
std::getline()
应在程序的预期输入来自交互式终端时使用。
这就是 std::getline()
所做的:它读取文本直到换行符。 operator>>
不会那样做,那是 std::getline()
所做的,而且应该用来处理一行输入的文本。为正确的工作使用正确的工具。
遗憾的是,许多 C++ 书籍和教程在介绍 std::getline()
之前过早地介绍了 >>
,并在他们的示例中使用它,仅仅是因为它更容易让 >>>
处理所需的数据类型转换更方便。不幸的是,这导致了一种错误的心态,其中 >>>
被认为是处理交互式输入的自动选择。它不是。
正确的方法是使用std::getline()
。然后,如有必要,构造一个 std::istringstream
,并使用它来处理输入的任何类型转换。这不仅解决了眼前的问题,还解决了无法解析的输入将 std::cin
置于失败状态的问题,所有后续尝试的输入转换也都失败了——这是另一个常见的陷阱。
因此,首先使用 std::getline()
:
#include <string>
#include <iostream>
#include <sstream>
#include <vector>
int main(void) {
std::cout << "Enter 4 words:" << endl;
std::string line;
std::getline(std::cin, line);
现在,一旦输入文本行,就可以将其转换为 std::istringstream
:
std::istringstream i(line);
随后循环重复调用 >>
以计算该行中的单词数。这部分你可以自己完成。
附言另一个常见的陷阱是 using namespace std;
。 You should not do that, as well .越早获得良好的编程实践,后续通往 C++ 大师之路的道路就越容易。
关于C++:只读取多个输入到行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507692/
我正在尝试使用 opencsv 库将 SQL 结果集导出到以逗号分隔的 csv 文件。但是,当我将结果集传递给 writeAll 函数时,除了它生成的文件不会用新行分隔行并在记事本中打开时创建一个几乎
所以我有一个包含混合行结尾的文件。我只需要删除 linux 换行符 (LF),但只保留 Windows 行结尾 (RFLF)。任何可以做到这一点的快速 bash one liner? 最佳答案 如果要
所以我有一个包含混合行结尾的文件。我只需要删除 linux 换行符 (LF),但只保留 Windows 行结尾 (RFLF)。任何可以做到这一点的快速 bash one liner? 最佳答案 如果要
嗨,我正在尝试将行尾代码以 CSV 格式放入,以将其导入到 Excel 我尝试放入 \n、“\n”、\r、“\r”、\r\n、“\r\n”但对我没有任何作用我试图将其导入 excel 2013 我的
while ((client = accept(sock, (struct sockaddr *) &c, (socklen_t *) &clientlength)) > 0) { int h =
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在从 LINUX(Debian) 读取一个 ASCII 文件到 Python CGI 脚本中,然后通过网页对其进行编辑然后保存, 如果我使用图形文本编辑器,编辑和未编辑的文件看起来是一样的,并且格
我有一个包含 n 列 y 行二进制值的文本文件。 我正在使用 getline 提取二进制值的每一行并将它们分配给 vector : 我正在使用 getline 提取文件的每一行,其中每一行由一系列由空
这个行尾问题让我抓狂... 背景:过去,我使用的是 core.autocrlf 设置,但我发现我遇到了不同的存储库表现不佳的问题(我在 Windows 上工作,我有一些需要 LF 结尾的存储库和一些需
我们有大量在不同平台上使用 CVS 的程序员。 我们有开发人员使用带 TortoiseCVS 的 Windows(它使用 cvsNT) 我们有开发者使用 ubuntu 8.04 我们的开发人员有两个盒
目前,我正在使用以下命令来更改 dos2unix 行尾,但这是针对 file-y 文件... sed -i 's/\r//' filename 有没有办法对目录中的所有文件运行此命令? 最佳答案 fo
我正在尝试将换行符 append 到已存在的文件中,但我尝试过的所有命令都导致仅 append 到第一行。我希望文件中的输出看起来像 行1 行2 private void addToFavToFil
我正在尝试将文件中的文本读入数组,然后将每个数组索引的内容输出到输出文件。我需要读取/存储数据直到它到达行尾,此时它应该重新开始读取/存储并重新使用数组进行临时存储,只输出到输出文件。 我不能使用 g
我在 PC 上安装了 Linux Mint,然后从 Bitbucket 克隆了 git 存储库以在其上运行。经过一些更改后,我确实在我的 PhpStorm ide 中提交了。在此提交期间,git 向我
我正在阅读有关 gcc 预处理的文档,我阅读了以下句子 ( here ): If the last line of any input file lacks an end-of-line marker
我们所有的开发人员都在 Windows 机器上工作,而构建是在 Linux 上完成的。 为了符合真正的方式,我们决定标准化行结尾并遵循场景 described on GitHub . 后来发现,有时从
出于某些原因,我的一个文件包含旧样式的mac行结尾(在osx上编辑后)。这些是“CR”(回车)字符,在git diff中显示为^m。 git不理解它们是行尾代码(真的有多难?)并将整个文件解释为一行。
为什么这段代码不起作用? b if b = true 错误:未定义局部变量或方法“b” 但是这样做: if b = true b end 他们不应该是一样的吗? 最佳答案 这是一个很好的问题。
我正在 checkout 具有Linux样式行结尾的文件(仅LF char)。当我在Windows中使用TortoiseSVN checkout 文件时,它将行尾转换为Windows样式(CR + L
我有一个 Windows 文本文件,其中包含一行(以 CRLF 结尾) aline 以下是几个命令的输出: [root@panel ~]# grep aline file.txt aline [roo
我是一名优秀的程序员,十分优秀!