- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是编程初学者。最近,我编写了一个程序来从字符串日期中获取日、月、年并将其转换为 int 并分配给数组的元素。但是 VS 在编译时返回一个错误,我不太明白。请帮我解释一下!提前致谢!我的程序
using namespace std;
int a[2];
int j = 0;
string str_date;
string str_date_sub;
void get_date()
{
if (str_date.find('/') == str_date.npos)
{
stringstream ss(str_date);
ss >> a[j];
}
for (int i = 0; i <= str_date.length(); i++)
{
if (str_date[i] == '/')
{
str_date_sub = str_date.substr(0, i - 1);
str_date.erase(0, i + 1);
stringstream ss(str_date_sub);
ss >> a[j];
j++;
break;
}
}
get_date();
}
int main()
{
cout << "Please input the date DD/MM/YYYY:\n";
str_date = "12/05/1234";
get_date();
cout << a[1];
system("pause");
return 0;
}
编辑:错误在这里
ss >> a[j];
Project6.exe 中的 0x5B03297A (msvcp140d.dll) 抛出异常:0xC0000005:访问冲突写入位置 0x01116890。
最佳答案
三个错误:
date中有3个token所以
int a[2];
需要
int a[3];
下一个
str_date_sub = str_date.substr(0, i - 1);
第二个参数是子串的长度,所以
str_date_sub = str_date.substr(0, i);
比较合适。
最后,在 get_date
get_date();
总是被调用,导致不受控制的递归。最终程序耗尽了自动存储空间,之后所有的赌注都被取消了。如果有更多的字符串需要解析,你只想重新进入函数。最简单的解决方法是放置一个 return
在结束时
if (str_date.find('/') == str_date.npos)
{
stringstream ss(str_date);
ss >> a[j];
return; // right here
}
但为什么要到此为止呢?
if (str_date.find('/') == str_date.npos)
找到了 /
的位置,所以为什么
for (int i = 0; i <= str_date.length(); i++)
嗯。制造那4个错误。 i <= str_date.length()
将在str_date
的范围外行进.
无论如何,这个循环没有意义。你可以
auto pos = str_date.find('/');
然后使用 pos
用于其余功能。
你也可以删除所有的全局变量,但是死侍还在,所以我退出了。
关于c++ - 关于异常(exception)成长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50313121/
我在一个最大高度为 80 的 div 内的表单中有一个 textarea。我的问题是当 textarea 中的文本太长时,textarea 应该从它的初始高度增长到 cb-input div 的最大高
我是编程初学者。最近,我编写了一个程序来从字符串日期中获取日、月、年并将其转换为 int 并分配给数组的元素。但是 VS 在编译时返回一个错误,我不太明白。请帮我解释一下!提前致谢!我的程序 usin
我最近发现了以下文本进度样式的方法,想知道是否有一种变通方法可以从中心增加元素宽度,这样文本也会从中心而不是从左侧填充。 body { background-color: black; } p {
我是一名优秀的程序员,十分优秀!