Мне не к спеху, код двухгодичной давности я не найду сейчас. Если вы не сталкивались с этим, ну и ладно тогда.
Из главной функции передаю двухмерный массив на дальнейшую обработку, проблема заключается именно в возврате массива обратно в главную функцию, а точнее, он не передается. Как все правильно организовать?
что то я вас вовсе не понял, но все же попытаюсь стать телепатом: Code: #include <vector> #include <iostream> void inc_matrix(std::vector<std::vector<int>> &matrix); void print_matrix(std::vector<std::vector<int>> &matrix); int main() { std::vector<std::vector<int>> matrix(2); matrix.at(0).push_back(0); matrix.at(0).push_back(1); matrix.at(1).push_back(2); matrix.at(1).push_back(3); std::cout << "Before inc:\n"; print_matrix(matrix); inc_matrix(matrix); std::cout << "After inc:\n"; print_matrix(matrix); return 0; } void inc_matrix(std::vector<std::vector<int>> &matrix) { for(std::vector<std::vector<int>>::iterator i = matrix.begin(); i != matrix.end(); ++i) for(std::vector<int>::iterator k = (*i).begin(); k != (*i).end(); ++k) (*k)++; } void print_matrix(std::vector<std::vector<int>> &matrix) { for(std::vector<std::vector<int>>::const_iterator i = matrix.begin(); i != matrix.end(); ++i) { for(std::vector<int>::const_iterator k = (*i).begin(); k != (*i).end(); ++k) std::cout << (*k) << ' '; std::cout << std::endl; } } мы передаем в ф-ю матрицу, она модифицируется и мы дальше ее используем(уже измененную).
Если через зад, используйте указатели. Если нормально, тогда возьмите код Ins3t. На счет getline. :/ http://www.cplusplus.com/forum/general/8383/
Во, вспомнил, есть одна проблема которую мне не решить. Допустим есть цикл: Code: for(int i=1;i<n;i++) { Первой строкой в цикле должен создаться файл с именем "1.txt" При втором ходе цикла нужно чтобы создался файл с именем "2.txt" Имя файла должно исходить от значения счетчика i и т.д.... } Вот как это все воплотить в реальность при этом не писать 100 строк?
ну вот как то так можно: Code: #include <fstream> #include <sstream> int main() { std::ofstream output_file; for(int i = 0; i < 10; i++) { std::ostringstream output_string_stream; output_string_stream << "C:\\" << i << ".txt"; output_file.open(output_string_stream.str().c_str(), std::ios::out); output_file.close(); } return 0; }
написал код без преобразований из char в string Code: #include <iostream> #include <iomanip> #include <string> #include <fstream> using namespace std; void main() { string b, b1, b2, linepass, lineuin, result; b = "UIN"; b1 = "(hex"; b2 = "\n"; ifstream input("log.txt", ifstream::in); ofstream fout("resultat.txt", ofstream::out); int l, dlin, k, i(0); do { l=996; getline(input, lineuin); //ищем совпадение в строке l=lineuin.find(b,0); //если совпадение есть, то выполняем условие if(l != -1 ) { //выдергиваем следующую строку после lineuin, это будущий пароль. getline(input, linepass); //копируем уин dlin=lineuin.find(b2, 0); lineuin.assign(lineuin, 10, dlin-11); //копируем пасс k=linepass.find(b1,0); linepass.assign(linepass, 6, k-7); //записываем в файл result = lineuin + ':' + linepass + '\n'; fout << result; } cout<<i++<<endl; }while(input.good()); input.close(); fout.close(); } но все равно выходит ошибка при работе с большими файлами. Code: Unhandled exception at 0x7c812afb in 2011.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0012fb10.. как быть?
Code: Unhandled exception at 0x7c812afb in 2011.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0012fb10.. означает буквально следующее: "Непойманное исключение: std:ut_of_range", иначе говоря, твой код генерирует исключение, а ты его не ловишь. правильно написать будет так Code: try { linepass.assign(linepass, 6, k-7); } catch (std::out_of_range& e) { cout << "my code is very disorderly so am i" } но важно не это, а то, что ты делаешь нечто, но не понимаешь что ты делаешь
я делал так, но ошибка возникает только на 13к строчке и до оттуда не доходил ну если косяк в проектировании, то укажи в чем. так то любое место программы могу объяснить. ну это не решение данной проблемы, мне уже принципиально разобраться почему не работает этот код, хотя вроде все верно но я посмотрю boost::regex, спасибо.
Выходим за границы контейнера. Вот в чем косяк. Неправильно выполняется одна из двух операций assign.
Кто-то сталкивался, как считать MBR? У меня на уме пока что только CreateFile(L"\\\\.\\PhysicalDrive0",...);
если закмментировать эти две строчки с функциями assign, то ошибки нету. но программа сама по себе закрывается примерно на 40к строчке. в чем косяк?
Что я делаю не так, почему в главную фанкцию значения a и b не возвращаются? Code: int func(int,int); void main() { int a=3,b=6; func(a,b); cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; } int func(int a,int b) { a=300; b=600; return a,b; } PS. Только что умные люди подсказали "Через оператор return можно вернуть только одно значение. Передача по ссылке нужна, когда необходимо вернуть несколько значений". Вопрос закрыт
Можно с помощью WideCharToMultiByte Code: char str[1024]; LPWSTR wstr = L"привет"; WideCharToMultiByte( CP_ACP , 0 , wstr , -1 , str ,1023 , 0 , 0 ); MessageBoxA(0,str,"",0);
http://www.cplusplus.com/reference/clibrary/cstdlib/wcstombs/ http://msdn.microsoft.com/en-us/library/s7wzt4be%28v=vs.80%29.aspx для новых версий Visual Studio.