无法打印char矢量的C ++向量

时间:2017-05-30 13:49:23

标签: c++ c++11 vector

我有一个char矢量的c ++向量:std::vector<std::vector<char>> ref 把字符放入其中(大小增加,所以字符在那里)我无法打印它。

通过调用this->ref.back().back(),它可以正确打印最后一个字符。但如果我ref.at(0).at(pos)ref[0].at(pos)ref[0][pos] 没有打印。

字符如下:

while (infile>>c)
    {
        if (c != '>') {
            ref.back().push_back(c);
            curSeqPos++;

        }
        else {
            infile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
            ref.push_back(std::vector<char>(USHRT_MAX));

            curSeq++;
            curSeqPos = 0;
        }
     }

知道我做错了什么吗?我是C ++的真正新手,可能在某个地方错过了参考。 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

我无法真正弄清楚你的代码。但是从这个pkc-config,ref是一个二维矢量数组

由于std::vector<std::vector<char>> ref是char的向量的二维数组,因此每个ref的索引说ref都必须保存一个char向量。你必须这样做,那就是为ref索引创建一个单独的char向量,否则任何尝试在该索引上打印内容,SIGSEGV错误。

你也不能ref[1],除了在ref [0]你已经向它提供了一个char向量,否则你会得到SIGSEGV错误。

ref[0][1] = 'd';

答案 1 :(得分:0)

尽我所能建设性,这里有一个有效的例子:

#include <string> // for stdout, putc
#include <vector>
std::vector<std::vector<char>> const slist = 
    {{'o','n','e'},{'t','w','o'},{'t','h','r','e','e'}};

int main() {
    const int sz = slist[1].size();
    for(int p=0; p<sz; p++) {
        putc(slist[1][p],stdout);
    }
    putc('\n',stdout);
    return(0);
}

这会将“two \ n”打印到stdout。你不能像你想象的那样在你的角色向量上使用printf(“%s \ n”,slist [1])。这甚至没有发出警告,只打印出胡言乱语。 Cout&lt;&lt; iostreams的slist [1]因类型转换错误而失败。

我们是否正在解决您的问题所在?请指导我们。