c++ - 如何在 C++ 中读取一堆字符串?

标签 c++ linux

我需要在事先不知道有多少字符串的情况下读取一堆字符串,并在读取时打印它们。所以我决定使用 while(!feof(stdin)) 作为 EOF 指标。这是我的代码:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>

using namespace std;
int main(void)
{ 
    char* str; 
    std::cout<<"\nEnter strings:";
    while(!feof(stdin))
    {  
        std::cin>>str;
        std::cout<<"\nThe string you entered is"<<str;
    }
    return 0;
}

由于某种原因,上面的代码在我输入第一个字符串后显示段错误。有人可以建议解决这个问题吗。

最佳答案

您需要为正在读取的字符串分配一些内存。

你目前所拥有的只是堆栈上指向某个随机内存区域的指针,这意味着当你读取字符时,它们会踩到其他数据,甚至是你不允许写入的内存——这会导致段错误。

尝试分配一些内存的问题在于,在读入字符串之前,您不知道要分配多少...(您可以只说“300 个字符”,看看是否足够。但如果不够'你有同样的数据损坏问题)

最好使用 C++ std::string 类型。

关于c++ - 如何在 C++ 中读取一堆字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346906/

相关文章:

c++ - 构造函数中的额外析构函数、复制构造函数、C++ 中的析构函数序列

java - 我应该使用哪种键值数据结构?按值快速检索,按键快速检索

c++ - 在 tcp 中提升 asio 异步处理程序

C++ MySQL 连接器 PrepareStatement Bad_Access

linux - ACL linux 的意外行为

linux - 如何匹配具有多种可能性的指定模式

c++ - C 编译器在尝试包含 C++ 类头时生成错误

linux 时间结果未写入文件

linux - 仅打开包含特定字符串的文件,然后在 Linux 命令行上替换

linux - 我如何要求操作系统在另一个内核上运行每个线程?-Linux 操作系统