从字符数组中读取整数的 Sstream 类 [已关闭]

sstream class to read integers from character array [closed]

提问人:Darnoc Eloc 提问时间:4/9/2020 最后编辑:Darnoc Eloc 更新时间:4/10/2020 访问量:46

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

3年前关闭。

我还没有看到任何利用 stringstream 从字符数组中读取整数列表的正确应用。

元素应作为空格分隔的字符串/(char 数组)输入在一行上,并使用 sstream 类来执行必要的转换。

这应该在不使用 vector 或任何其他额外的 STL 容器(仅限 std::string 和 char 数组)的情况下完成,生成的整数数组的长度应存储在变量中。

进行这种操作的最有效方法是什么?

C++ 数组 IOstream 字符串

评论

0赞 ChrisMM 4/9/2020
从字面上看,有数百个用于从字符串中读取整数的例子。或者你想实现你自己的?stringstreamstringstream
0赞 Darnoc Eloc 4/9/2020
您能否提供一个用户提供的字符串通过 stringstream 读取并转换为整数数组的工作示例?

答:

1赞 ChrisMM 4/9/2020 #1

假设我明白你的意思,那么

#include <iostream>
#include <vector>
#include <sstream>

int main() {
    std::string apples;
    std::getline( std::cin, apples );

    std::istringstream iss( apples );

    std::vector<int> vec;
    int val;

    while ( iss >> val ) {
        vec.push_back( val );
    }

    for ( int i : vec ) {
        std::cout << i << ',';
    }
}

评论

0赞 Darnoc Eloc 4/9/2020
在不使用向量的情况下,将输入存储到整数数组(指针)中。
0赞 ChrisMM 4/9/2020
从现有数组转换为数组很简单。vector
0赞 Darnoc Eloc 4/9/2020 #2

这更像是我所得到的。

int* theheap = new int[10];
std::string num;
int val = 0;
int size = 0;
std::cout << "Enter the elements of heap" << std::endl;
std::getline( std::cin, num );
std::istringstream iss(num);    
while ( iss >> val ) {
   if (val != ' '){
      theheap[size] = val;
      ++size;
   }
}

评论

0赞 ChrisMM 4/11/2020
你不必比较 ,事实上,这将使它忽略数字 32。由于已经读取整数,并跳过空格。' 'iss >> val