首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的char数组使用VisualStudio2017 C++切断了318个字符

我的char数组使用VisualStudio2017 C++切断了318个字符
EN

Stack Overflow用户
提问于 2017-12-26 07:29:31
回答 2查看 163关注 0票数 1

你好,我有一个问题,我的char arrays (strings)不能显示任何过去的318 characters。如果我做了一个std::string,它会很好,并显示整个事情.但是,如果我试图使用std::string.c_str()将其转换为char数组,它只会再次生成第一个318 characters。任何帮助都将不胜感激。我在用Visual Studio 2017。实际的字符串长度是517chars

例如..。

代码语言:javascript
复制
std::string x = "INSERT INTO oms.Customers (customerFirstName, CustomerMiddleInitial, customerLastName, customerPrefixSuffix, customerCompanyName, customerStreetReference, customerStreetAddress, customerCity, customerState, customerZip, CountryID, customerPhoneNumber, customerEmail, customerIsCompany, customerIsActive) Values('Bill', '
INSERT INTO oms.Customers(customerFirstName, CustomerMiddleInitial, customerLastName, customerPrefixSuffix, customerCompanyName, customerStreetReference, customerStreetAddress, customerCity, customerState, customerZip, CountryID, customerPhoneNumber, customerEmail, customerIsCompany, customerIsActive)Values('Bill', ' ', 'Cosby', '', 'The Cosby Show', 'Studio A', '1818 broadway st', 'Philadelphia', 'PA', '19809', '', '6169875942', 'Bill.Cosby@ididntdoit.com', '', ');SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];"

但是如果我做了任何类型的char数组,就像我做了

代码语言:javascript
复制
char *y;
y= x.c_str

只有下面的内容才会显示

代码语言:javascript
复制
INSERT INTO oms.Customers (customerFirstName, CustomerMiddleInitial, customerLastName, customerPrefixSuffix, customerCompanyName, customerStreetReference, customerStreetAddress, customerCity, customerState, customerZip, CountryID, customerPhoneNumber, customerEmail, customerIsCompany, customerIsActive) Values('Bill', '

如果我做了strlen(y),我就会得到318。如果我做了x.length(),我就会得到517

任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-26 07:53:52

std::string可能包含'\0'字符,这些字符将被strlen(y)标识为C样式NUL终止字符串结束标记。

这就是为什么strlen()std::string::length()的结果不同的原因。

票数 1
EN

Stack Overflow用户

发布于 2017-12-26 07:56:07

如果我把绳子弄成原样:

代码语言:javascript
复制
std::string x = R"(INSERT INTO oms.Customers (customerFirstName, CustomerMiddleInitial, customerLastName, customerPrefixSuffix, customerCompanyName, customerStreetReference,
        customerStreetAddress, customerCity, customerState, customerZip, CountryID, customerPhoneNumber, customerEmail, customerIsCompany, customerIsActive) Values('Bill',
        '

            INSERT INTO oms.Customers(customerFirstName, CustomerMiddleInitial, customerLastName, customerPrefixSuffix, customerCompanyName, customerStreetReference,
                customerStreetAddress, customerCity, customerState, customerZip, CountryID, customerPhoneNumber, customerEmail, customerIsCompany, customerIsActive)Values('Bill',
                    ' ', 'Cosby', '', 'The Cosby Show', 'Studio A', '1818 broadway st', 'Philadelphia', 'PA', '19809', '', '6169875942', 'Bill.Cosby@ididntdoit.com', '', ');SELECT
                    SCOPE_IDENTITY() AS[SCOPE_IDENTITY]; )";
                    char const *pStr = x.c_str();
                    _RPTA("strlen: %d\r\n", strlen(pStr));

长度打印为857 (_RPTA是一个自定义宏,它输出到VS调试跟踪,而不是像printf那样的程序控制台)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47975310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档