首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++:函数返回的字符串向量

c++:函数返回的字符串向量
EN

Stack Overflow用户
提问于 2014-10-19 16:30:09
回答 3查看 842关注 0票数 3

从本质上说,我在class A中有一个私有的class A,它有一些操作等,通过公共方法std::vector<std::string> allocMethod()完成,然后这个方法执行return alloc。在class B中调用该方法

class B中,我要打印allocMethod的返回值,即alloc向量。这就是我所拥有的

代码语言:javascript
复制
std::cout << A.allocMethod();

我知道,通常情况下,人们会使用某种中介和循环来打印一个向量,但我认为我不能这样做,因为它是一个函数,返回值正在打印,而不是实际的向量。

注意:我实际上不需要只打印出class A中的向量。

是否有一种方式输出std::vector<string>的结果,如上面所示?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-19 16:36:54

“注意:我其实不想只打印A班的向量。”

由于您希望重复使用此操作,因此可能值得为std::vector<std::string>提供适当的输出操作符重载。

代码语言:javascript
复制
std::ostream& operator<<(std::ostream& os,const std::vector<std::string>>& vs) {
    for (const auto& s : vs) {
        os << s << " ";
    }
    return os;
}

这应该允许只打电话

代码语言:javascript
复制
std::cout << A.allocMethod();

您甚至可以尝试使用更通用的重载。

代码语言:javascript
复制
template<typename T>
std::ostream& operator<<(std::ostream& os,const std::vector<T>>& vs) {
    for (const auto& s : vs) {
        os << s << " ";
    }
    return os;
}
票数 2
EN

Stack Overflow用户

发布于 2014-10-19 16:33:41

与您的想法相反,您可以通过迭代来打印向量,尽管它是使用C++11 for-循环的临时方法,如下所示:

代码语言:javascript
复制
for (const auto& i : A.allocMethod())
    std::cout << i << '\n';
票数 2
EN

Stack Overflow用户

发布于 2014-10-19 16:33:35

您只需存储返回值,然后对其进行迭代。如下所示:

代码语言:javascript
复制
std::vector<std::string> result = allocMethod();
for (std::size_t i = 0; i < result.size(); ++i)
{
    std::cout << result[i];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26452699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档