【问题标题】:Visual C++ Error C2146Visual C++ 错误 C2146
【发布时间】:2011-08-12 14:05:53
【问题描述】:

大家, 我试图使用 C++/CLI 编译一个程序来检查我的股票,但是当我将变量放入 URL 时遇到了错误。有人可以帮帮我吗?

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    this->webBrowser1->Navigate("http://finance.yahoo.com/echarts?s="num".HK+Interactive#chart1:symbol="num".hk;range=1d;indicator=volume;charttype=line;crosshair=on;ohlcvalues=0;logscale=on;source=undefined");
}

哦,顺便说一下,这段代码来自“Windows 窗体应用程序”,变量的名称是“num”。同样,如果可能的话,我将不胜感激。谢谢。

【问题讨论】:

  • 您是在尝试将 num 的值插入您的 URL,还是尝试将字符串“num”实际放入您的 URL?
  • 确切的错误信息是什么?
  • 我已经编辑了标签 -- 这是 C++/CLI,不是 C++。
  • 对不起大家,由于我的简单(太简单)问题,我无法为大家提供您需要的信息。如果可以的话,请查看我的另一个问题(我只问了 2 个问题)。谢谢。

标签: url variables c++-cli browser


【解决方案1】:

看起来你没有做任何事情来构建字符串。我从来没有做过托管 C++,但我认为你不能这样做: "http://finance.yahoo.com/echarts?s="num 得到你想要的。在 C# 中,您可以只使用 operator+:"http://finance.yahoo.com/echarts?s=" + num,或者使用 StringBuilder 或 String.Format。我想托管 C++ 中也有类似的东西。

【讨论】:

  • 我已经为我的程序构建了字符串,我想将“num”的值插入到 URL 中。哦,如果来自文本框,则“num”的值。感谢您的快速回答,任何人都可以发布我需要使用的代码示例吗?再次感谢您的回答。
  • 在这种情况下“已经建立了字符串”是什么意思?是静态字符串(除非你需要插入 num 的值)还是动态构建的字符串?
  • 好的,我很抱歉。我所说的“已经构建了字符串”的意思是我在代码中输入了int num = int:: Parse(textBox1->Text);。感谢您的帮助! :)
  • 除了这个问题,我忘了说另一个错误(对不起)。以下是我收到的所有错误: C2146:语法错误:在标识符 'num' 之前缺少 ')' C2059:语法错误:')' 它们都来自同一行,即:this->webBrowser1->Navigate("http://finance.yahoo.com/echarts?s="num".HK+Interactive#chart1:symbol="num".hk;range=1d;indicator=volume;charttype=line;crosshair=on;ohlcvalues=0;logscale=on;source=undefined");。再次感谢所有帮助!
  • 我认为问题仍然是我所说的——你不能简单地将变量名放在被污染的字符串中间以使字符串追加。 sprintf 是一种使用标准 C 字符串 (cplusplus.com/reference/clibrary/cstdio/sprintf) 的方法。我不太了解 stl 字符串,无法知道这些因素是如何影响的。在 C# 中,您使用 System.Format,您可以在托管 C++ 中使用它。
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多