c++ - Stringstreams 不工作 C++

标签 c++

我正在尝试解决第 482 号 UVA 问题(置换数组),但我想问的不是解决方案,而是为什么我的代码中的字符串流无法按预期工作。

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <vector>

using namespace std;

string urutan,nilai,T;
float zzz;
int lalala,a;

int main()
{
    vector<int> line;
    vector<float> numbers;
    vector<float> results;
    stringstream ss1(urutan),ss2(nilai);
    getline(cin,T);
    a = atoi(T.c_str());
    while(a--)
    {
        getline(cin,urutan);
        getline(cin,nilai);
        lalala = 0;

        while(ss1 >> zzz)
        {
            line.push_back(zzz);
            lalala++;
        }
        while(ss2 >> zzz)
        {
            numbers.push_back(zzz);
        }
        results.resize(lalala);

        for (int i =0; i < lalala; i++)
        {
            results[line[i]-1] = numbers[i];
        }

        for(int i = 0; i < lalala; i++)
        {
            cout << results[i] << endl;
        }
        numbers.clear();
        results.clear();
        line.clear();
    }   
    return 0;
}

如您所见,代码中有 2 个 stringstream 操作。但是当我尝试运行时,代码似乎只是跳过了 stringstream 和 cout 部分!!有什么问题?

最佳答案

构造字符串流的字符串未被引用;它的已复制。您正在将一个空字符串加载到流中,然后在读取数据时对 stream 进行任何更改。在循环中移动流构造:

vector<int> line;
vector<float> numbers;
vector<float> results;
stringstream ss1(urutan),ss2(nilai); // MOVE THIS
getline(cin,T);
a = atoi(T.c_str());
while(a--)
{
    getline(cin,urutan);
    getline(cin,nilai);
    lalala = 0;

    while(ss1 >> zzz)

到这里:

vector<int> line;
vector<float> numbers;
vector<float> results;
getline(cin,T);
a = atoi(T.c_str());
while(a--)
{
    getline(cin,urutan);
    getline(cin,nilai);
    lalala = 0;

    stringstream ss1(urutan),ss2(nilai); // MOVED HERE
    while(ss1 >> zzz)

关于c++ - Stringstreams 不工作 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459699/

相关文章:

c++ - 将当前对象传递给方法、引用或指针

c++ - 使用具有相同成员函数名称的 CRTP

c++ - G++ CAS 的奇怪行为

c++ - 在模板函数和自动类型推导之间选择

c++ - 在 C++ 中设置默认参数

c++ - 尝试创建 Qt 4.7 QStrings,填充到指针数组中

c++ - 如何制作指针的拷贝

c++ - #pragma pack 无法编译?

c++ - 减少线程或进程的 CPU 使用率

c++ - 源代码中的注释