Форум программистов, компьютерный форум CyberForum.ru

std::string variable.data() обрезает содержимое строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как вывести матрицу http://www.cyberforum.ru/cpp-beginners/thread829430.html
матрица: 2 столбца и 11 строк...
C++ Пожалуйста найдите ошибку в Конечном Автомате на С++ Помогите найти ошибку в Конечном Автомате на С++ для: а*b*с*(d|f)+n*h* . Может даже и не верна введена таблица для исходного выражения. #include "stdafx.h" #include "iostream" #include "string.h" using namespace std; void main() { int j; http://www.cyberforum.ru/cpp-beginners/thread829428.html
C++ Эрор при компиляции
Здраствуйте) Знаю что вопрос смешной, но все-таки.................. Я вот компилирую программу, студия показывает что все хорошо) Как только нажимаю Сtrl+F5, выполнить построение так оно выдает ошибку. В чем собственно дело?????????? #include <iostream> using namespace std; int main() { cout << "Hello, world!";
C++ Определить, сколько раз каждое число используется в массиве
Вот код: #include <iostream> using namespace std; int main() { //двухмерный массив int numbers = {{1, 2, 7} , {2, 5, 3}, {1, 9, 4}, {2, 6, 5}, {7, 2, 2}};
C++ Правописание http://www.cyberforum.ru/cpp-beginners/thread829421.html
Есть метод класса, который в качестве возвращаемого значения выдает указатель. Как правильно писать: int vector :: *get() { ... } или int *vector :: get() { ...
C++ Доступ к элементам связного списка как организовать самый простой для реализации способ чтобы получить доступ к i-му элементу в односвязном списке? придумал только создать вектор в который помещать адрес элемента из списка, получая доступ к i-му элементу вектора, получаем доступ к нужному элементу связного списка. но тогда сама суть пропадает связного списка, раз вектор используем в придачу к нему. подробнее

Показать сообщение отдельно
VN
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 90
06.04.2013, 11:40  [ТС]     std::string variable.data() обрезает содержимое строки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>     // std::cout
#include <fstream>      // std::ifstream
#include <curl/curl.h>
#include <curl/easy.h>
#include <string>
#include <locale>
#include <sstream>
 
using namespace std;
 
int main () {
 string gMap;
 string theLink;
 size_t length = 0;
 ifstream file;
 
    file.open("_CACHE_001_", ios::binary);
    if (file) {
       while (!file.eof()) gMap.push_back(file.get());
        }
    else
      {
       cerr << "ERROR: could not open the file" << '\n';
       return 0;
      }
    string grep ("http://maps.google.ru/maps/iw?");
    size_t found = gMap.find(grep);
    size_t begin = found;
    if (found == string::npos)
      {
         cerr << "ERROR: no such combination" << '\n';
         return 0;
      }
    while(begin + 1 < gMap.length() && gMap[++begin] != ' ')
       ++length;
 
   theLink = gMap.substr(found,length+1);
   cout << theLink << '\n' << '\n';
   cout << theLink.data() << '\n';
   
  file.close();
return 0;
}

Скопипастил. Результат одинаковый

Добавлено через 4 минуты
Используйте c_str(), если вам нужна сишная строка с точно таким же полным содержимым.
Использвовал. c_str не помогает
C++
1
2
3
4
5
6
   theLink = gMap.substr(found,length+1);
   cout << theLink << '\n' << '\n';
   cout << theLink.c_str() << '\n';
 
  file.close();
return 0;
}

т.е результат такой же как с data()

Добавлено через 9 минут
Это сработало
C++
1
  std::cout.write(theLink.data(), theLink.size());
Да похоже там притерся \0


Но как тогда мне перевести это в char *? дело в том что библиотека curl работает только с char *
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru