getline 相关问题

一个C函数,它从流中读取整行。它最初是一个在POSIX.1-2008中标准化的GNU扩展。

进程以信号 13 (SIGPIPE) 的默认操作终止

我试图读取用户在缓冲区中写入的全部数据,以便在我自己的 shell“称为 hsh”内处理它,但该过程以信号 13 终止: 这是我要执行的命令...

回答 1 投票 0

如何编写 C++ 代码,将 n 个字符串存储在字符串向量中,然后将其打印出来

如何编写 C++ 代码来接受 n 个字符串(之间可以有空格)并将它们存储在字符串向量中,然后打印它? (将字符串放入向量中是必要的。) #包括 如何编写 C++ 代码,接受 n 字符串(之间可以有空格)并将它们存储在字符串向量中,然后打印它? (将字符串放入向量中是必要的。) #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<string> v; for (int i = 0; i < n; i++) { string s; getline(cin, s); v.push_back(s); } for (int i = 0; i < n; i++) { cout << v[i] << endl; } } 这是我的代码。它只取 n - 1 字符串而不是 n 字符串。然后它打印一个新行,然后打印 n - 1 字符串。 替换我 说明 我看到您遇到的问题。这与cin和getline之间的相互作用有关。使用 cin 读取 n 后,它会捕获数字,但不会从输入缓冲区中删除换行符。这会导致后续的 getline 读取空字符串。要绕过这个问题,最好在读取后立即清除输入缓冲区 n。 代码 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Clearing the input buffer vector<string> v; for (int i = 0; i < n; i++) { string s; getline(cin, s); v.push_back(s); } for (int i = 0; i < n; i++) { cout << v[i] << endl; } } 这应该可以解决问题。

回答 2 投票 0

为什么 std::getline() 在格式化提取后会跳过输入?

我有以下一段代码,提示用户输入猫的年龄和名字: #包括 #包括 int main() { 年龄; std::字符串名称; std::c...

回答 5 投票 0

std::getline on std::cin

有什么充分的理由吗: std::字符串输入; std::getline(std::cin, 输入); getline 调用不会等待用户输入? cin的状态是不是有点混乱了?

回答 4 投票 0

为什么 std::getline() 似乎会弄乱重音字符?

我正在尝试在我的 C++20 程序中使用和显示法语重音字符。 然而,使用 std::getline() 读取文件内部似乎会弄乱重音字符,如下所示: #包括 我正在尝试在我的 C++20 程序中使用和显示法语重音字符。 但是,使用 std::getline() 读取文件内部似乎会弄乱重音字符,如下所示: #include <locale> #include <iostream> #include <fstream> int main(void) { setlocale(LC_ALL,""); std::wifstream file("test.txt"); std::wstring s; std::getline(file, s); std::wcout << s << std::endl; return 0; } test.txt的内容(以UTF-8编码): Salut ! Comment ça va ? éèêëâàäáôûöüùîï 结果: $>./test Salut ! Comment ça va ? éèêëâà äáôûöüùîï 但是,当我尝试显示与const std::wstring相同的文本时,结果没有问题: #include <locale> #include <iostream> int main(void) { setlocale(LC_ALL,""); std::wstring s = L"Salut ! Comment ça va ? éèêëâàäáôûöüùîï"; std::wcout << s << std::endl; return 0; } 结果: $>./test Salut ! Comment ça va ? éèêëâàäáôûöüùîï 使用 setlocale(LC_ALL, "") 使问题变得更好,就像以前一样,即使第二个例子也不起作用,但 std::getline() 似乎有一个我不明白的问题。 我读到我可能需要将语言环境注入 std::wifstream,但我不明白如何使其工作。 我对 C++ 相当陌生,所以我不确定是否有更好的工具来解决此类问题,至少我找不到。 我在 MinGW 上使用 zsh,集成到 VSCode 中。 我使用以下命令进行编译: c++ -Wall -Wextra -Werror -std=c++20 test.cpp -o test 由于这篇文章我能够解决这个问题! 灌输是解决方案,这就是解决我的问题的方法: #include <locale> #include <codecvt> #include <iostream> #include <fstream> int main(void) { setlocale(LC_ALL,""); std::wifstream file("test.txt"); file.imbue(std::locale(std::locale(), new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>)); std::wstring s; std::getline(file, s); std::wcout << s << std::endl; return 0; } 这一行: file.imbue(std::locale(std::locale(), new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>)); 原来是: file.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>)); 但是,std::locale::empty()是特定于平台的,如这个SO问题所示,所以我将其替换为std::locale()并且工作正常。

回答 1 投票 0

(C++) 如何读取目录中的所有文件并将其内容放入向量/std::list 中?

文件的内容逐行排列并放入“Schedule”结构中。我的目标是将这些计划存储在 .txt 文件中,以便它们在执行结束后不会消失,并且...

回答 3 投票 0

C++ std::fstream getline() 在第一行长行后停止读取文件

我使用std::fstream通过成员函数getline()逐行读取文本文件。它使用有限大小的缓冲区,有时输入的行比缓冲区长。第一次阅读后...

回答 1 投票 0

有没有办法允许某人重新输入答案?

本质上,我是 C++ 新手,正在制作一个非常基本的基于文本的 RPG 游戏以供娱乐。我的识别功能正常工作,但我输入的内容必须非常精确,否则我会被软锁定......

回答 1 投票 0

如何使用 irrKlang 播放用户输入路径的声音文件

我正在尝试使用 irrKlang 在 C++ 中制作音乐播放器。我想这样做,以便您可以使用 getline(cin, filename) 输入声音文件的路径,然后引擎会为您播放该声音文件。

回答 0 投票 0

c

我正在学习在 C 编程中使用 getline 并尝试了来自 http://crasseux.com/books/ctutorial/getline.html 的代码 #包括 #包括 #include...

回答 4 投票 0

如何在不阻塞输入的情况下使用 getline?

是否有任何方法可以调用 getline() 并且,如果没有给出输入,则不会阻塞和等待? 我有以下代码: 而(真){ 如果(recv(sd,tBuffer,sizeof(tBuffer),MSG_PEEK |

回答 4 投票 0

如果输入有不同类型的空白字符,我如何将所有输入作为字符串获取?

例如, 输入: 有美好的时光 也有不好的时候 结尾 #包括 #包括 使用命名空间标准; //有美好的时光 //也有不好的时候 //结尾 ...

回答 1 投票 0

我正在用 C++ 编写一个小代码,但我一直收到此错误 [重复]

#include #包括 #包括 #包括 #包括 使用命名空间标准; 类标签{ 民众: 字符串名称{}; 矢量<

回答 1 投票 0

从文件中读取未返回正确数量的对象

我正在编写一个 Discord 机器人,使用 D++ 库来跟踪实体的健康状况,并允许服务器上的用户修改所述实体的健康状况。 我的问题是我的命令...

回答 2 投票 0

cin.ignore() 忽略 1 个字符,但如果删除,将跳过其他 getline

所以我正在编写这段代码 结构标准信息{ 字符名称[50]; 字符标准号[50]; 炭化[50]; 字符程序[50]; char yearLvl[50]; }; 结构标准等级{ 双转数; 双人机交互; ...

回答 0 投票 0

循环调用的 std::getline 不等待用户输入

很抱歉问了这样一个可能有重复的令人尴尬的简单问题,但我一直在努力通过大量的 StackOverflow 答案,并且无法在 C++ 中获得基本的 I/O 来......

回答 1 投票 0

打开文件或标准输入时的错误处理

如果提供文件名,我的程序从文件读取,否则从标准输入读取: 如果(isatty(STDIN_FILENO)){ 如果 (!(f = fopen(argv[1], "r")) ) { 错误(argv[1]); 退...

回答 2 投票 0

为什么 getline 没有在我的程序顶部工作,而是在另一个函数中工作?

我正在开发一个循环程序,直到用户输入 y 或 Y 以外的字符以停止它。我正在使用 std::getline(),因为我需要从另一个

回答 1 投票 0

使用 C 程序搜索使用 echo 命令创建的文件时找不到子字符串

我正在开发一个 C 程序,该程序应该计算给定文件中子字符串列表的出现次数。当我使用手动创建并填充的文件测试程序时...

回答 2 投票 0

使用 BUFFER_SIZE 大于 1 的 Get Next Line 进行线路管理时出现问题

我目前正在为我的学校做 Get Next Line 项目,该项目涉及从文件描述符 (fd) 读取并逐行返回读取的行。我已经成功实施了

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.