【问题标题】:I am getting an error when trying to initialize a 15 member string variable [closed]尝试初始化 15 个成员字符串变量时出现错误 [关闭]
【发布时间】:2022-01-21 05:15:22
【问题描述】:

我要初始化的字符串如下:

string X$, X$[15]{ 'Current assets', 'Current liabilities', 'Inventory', 'Total debt', 'Total assets', 'Profit before taxes',
        'Interest charges', 'Annual lease obligations', 'Fixed charges', 'Sales', 'Receivables', 'Sales per day', 'Fixed assets',
        'Net profit after taxes', 'Net worth'};

我收到一个错误

字符常量中的字符太多

我不确定我在这里做错了什么。自从我进行任何 C++ 编程以来已经有很多年了,自从我上次进行任何编程以来,很多事情都发生了变化。我正在使用 Microsoft Visual Studio 2022。

此变量将用作另一个变量 (double X[15]) 的列的“标题”,该变量将包含与每个字符串名称相关联的值。我需要确保双变量和字符串变量都已正确初始化,以便它们都能在我正在处理的程序中正常工作。此信息是否最好以多维数组(也许是二维数组)表示?如果是这样,我将如何正确地做到这一点,其中一个元素是字符串,另一个是双精度?

【问题讨论】:

  • 在C++中,字符串用双引号"Current assets"
  • string X$, X$[15] 看起来很奇怪。你是在声明一个变量X$吗?我不知道$ 是否是变量名的有效符号。看起来您还尝试两次声明同一个变量,一次作为string 类型的普通变量,第二次作为string[15]
  • 也许你想要string X[15]{ "Current assets", "Current liabilities", ...};
  • $ 不是标准 C++ 中有效标识符的一部分。

标签: c++ string multidimensional-array


【解决方案1】:

我想建议 std::map 进行数据计算。 (https://en.cppreference.com/w/cpp/container/map)

std::map<:string double> map_data { {"Current assets", 1.0}, {"Networth", 2.0}};

map_data["Net worth"] = 3.0;  // update an existing value
map_data["Current"] = 4.0;  // insert a new value
auto net_worth = map_data["Net worth"];

或用于简单数据存储的配对。

std::pair<std::string, double> data[2] = {{"Current assets", 1.0}, {"Net worth", 2.0}};
auto first_string = data[0].first;  // "Current assets"
auto first_double = data[0].second;  // 1.0

【讨论】:

  • 使用 $ 作为变量名的一部分是个问题。当我将它从 X$ 更改为 X1 时,错误已得到纠正。我认为配对的想法也适用于将 X1 和 X 的数据一起保存为名称和金额的配对。
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 2011-09-21
  • 2019-07-25
相关资源
最近更新 更多