将值分配给同一行上的多个声明

时间:2013-09-10 23:45:28

标签: c++

我正在创建变量

std::string str1,str2,str3,str4 = "Default";

但是变量没有Default值。如何为以这种方式创建的变量赋值

6 个答案:

答案 0 :(得分:9)

str4将拥有您正在寻找的价值。你刚刚没有初始化其他人。使用:

std::string str1 = "Default", str2 = "Default", str3 = "Default", str4 = "Default";

或者,可能更好:

std::string str1 = "Default";
std::string str2 = "Default";
std::string str3 = "Default";
std::string str4 = "Default";

如果您担心打字太多,可以使用赋值而不是初始化:

std::string str1, str2, str3, str4;
str1 = str2 = str3 = str4 = "Default";

但是这有不同的语义,并且(恕我直言)有点迟。

答案 1 :(得分:3)

通常,当您的变量名称中包含数字时,数组将更适合。这为您提供了使用std::fill_n以及

的额外好处
#include <algorithm>

std::string str[4];
std::fill_n( str, 4, "Default" ); // from link provided by Smac89
// str[0], str[1], str[2], str[3] all set to "Default"

答案 2 :(得分:2)

链接怎么样?

std::string str1, str2, str3, str4;
str1 = str2 = str3 = str4 = "Default";

答案 3 :(得分:2)

std::string str1,str2,str3,str4;
str1 = str2 = str3 = str4 = "Default";

答案 4 :(得分:1)

std::string str1 = "Default", str2 = "Default", str3 = "Default", str4 = "Default";

分别初始化每个变量,最好每行声明一个变量。

答案 5 :(得分:-1)

使用某些C ++ 11功能的方法:

#include <iostream>
#include <string>
#include <algorithm> //for_each
#include <iterator> //begin, end

using std::string;

int main() {

    string strs[4];
    std::for_each (std::begin(strs), std::end(strs), [](string &str) {
        str = "Default";
    });

    for (string str: strs)
        std::cout << str << "\n";
    return 0;
}

此代码最重要的一个方面是lambda函数。我刚看过他们,不得不尝试一下。如果你是interested in learning more

,这是一个链接