C++ strlen函数错误

huangapple go评论98阅读模式
英文:

C++ strlen function bug

问题

我遇到了一个非常奇怪的 bug,不知道为什么会发生,Visual Studio 显示这是 C++ 语言文件 "xstring" 中的一个 bug,它告诉我与 strlen() 函数有关。

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
	string args;
	string file;
	for (int i = 0; i < sizeof(argv); i++) {
		args = args + argv[i];
	}
	if (args.empty()) {
		while (true) {
			cout << "指定应用程序路径。\n";
			cout << ">>>";
			cin >> file;
		}
	}
	else {
		cout << "正在加载文件... " << argv[1] << "\n";
	}
}

我尝试找到解决方案,但没有一个解决方案有效。

英文:

I have encountered a very weird bug, i don't know why is this happening and visual studio says it is a bug in the cpp language file "xstring". it tells me it is something with the strlen() function.

#include &lt;iostream&gt;
using namespace std;

int main(int argc, char** argv)
{
	string args;
	string file;
	for (int i = 0; i &lt; sizeof(argv); i++) {
		args = args + argv[i];
	}
	if (args.empty()) {
		while (true) {
			cout &lt;&lt; &quot;Specify A Path To An App.\n&quot;;
			cout &lt;&lt; &quot;&gt;&gt;&gt;&quot;;
			cin &gt;&gt; file;
		}
	}
	else {
		cout &lt;&lt; &quot;Loading File... &quot; &lt;&lt; argv[1] &lt;&lt; &quot;\n&quot;;
	}
}

I tried to find a solution but no solution worked.

答案1

得分: 2

sizeof(argv) 不是参数的数量,而是指针 char** 的字节数。您应该使用参数 argc 来获取参数的数量。

英文:

sizeof(argv) is not the number of arguments but the number of bytes of a pointer char**. You should use the argument argc to retrieve the number of arguments.

huangapple
  • 本文由 发表于 2023年3月7日 20:53:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/75662226.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定