字符串未在C ++中正确添加

时间:2015-04-23 01:14:23

标签: c++

我花了大约3个小时试图通过搜索谷歌和其他线程来解决这个问题,但没有找到适合我的解决方案。

我正在创建一个库存程序,但我遇到了一个非常独特的问题。 当我运行我给出的数据文件时,程序会抛出lexical_cast boost异常。我知道抛出异常的确切行,但是为什么抛出异常没有意义。

如果我从文本文件中获取数据并将其复制并粘贴到一个全新的文本文件中,该程序将完美地运行它。 100%功能。但是,当我运行原始数据文件时,年份字符串会在添加时突然删除。

std::cout << year << std::endl; //prints out year perfectly
std::string date_str = "";
date_str += year; // <-- Here's the Problem. //Gets added as an empty string
std::cout << date_str << " Year should be added" << std::endl;
date_str += month;
std::cout << date_str << " month added" << std::endl;
date_str += date;
std::cout << date_str << " date_str" << std::endl;
std::cout << year << std::endl;

//The following line is what is throwing the exception:
boost::gregorian::date d = boost::gregorian::from_undelimited_string(date_str);   

打印出来是:

2010
 Year should be added //Notice the space at the beginning where year should be.
05 month added
0501 date_str
2010
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast> >'
what():  bad lexical cast: source type value could not be interpreted as target
Abort (core dumped)

编辑:最后有一个\ r \ n字符。我添加了一个擦除方法调用到年份,代码现在完美运行。

0 个答案:

没有答案