Visual C++ :: Error / String Subscript Out Of Range
Nov 3, 2014
I have an assignment where i have to prompt the user to enter the name of a file then open that file and read names of students and what level they are at university
eg : John Wilkins, sophomore
Dan Robertson, junior
etc..
i did the code and it compiles perfectly, but when i input the name of the file it gives me error: string subscript out of range.
here's the code:
Code:
#include <iostream>
#include <cstring>
#include <string>
#include<ctime>
#include <fstream>
using namespace std;
int * read_file(string filename)
I've been getting this expression of "subscript being out of range" for my program but i'm not sure how exactly. I'm fiddling around with code, i'm trying to make a two dimensional array of random numbers, here is my code, it compiles just fine:
I have the following code. however, when I debug it gives an error saying" vector subscript out of range"
Vector based mufti-dimensional arrays
Vectors are a STL container that allow you to store pretty much anything in them. When used correctly they can be very powerful containers.
They provide an added benefit that they will automatically remove the memory they use when they go out of scope. This means that objects stored within a vector do not need to be de-allocated (but pointers to objects do). You can also do some interesting things with dynamic multidimensional arrays with vectors.
For example, if you only allocate the first dimension, then use the .push_back() to add records to the 2nd dimension it's no longer a grid, but an array with a dynamically sized 2nd dimension (much like a street of buildings each with a different amount of floors).
This functionality can be achieved using pointers, but is much harder to do.
#include <iostream> #include <vector> #include<conio.h> using std::vector; using namespace std;
I've been debugging this program since yesterday and I continue to run into a string subscript error. I pasted the code in a pastebin (it's only 400 lines), to see why I'm getting this. The problem seems to come up during a debug assertion failure.
whenever I try to use either <string> or any STL container. Everyone I saw so far, says that "using a .reserve(n)" before adding items to random positions is enough. However, each time I run the code, I still get the same error, unless I actually write the memory with some initial data, and only after access random positions.I am fully aware of the fact that the STL containers and <string> are dynamic data types and memory allocation is done dynamically. However, if I need to allocate all those memory slots before knowing how many I need, would lead me to the same memory complexity as using a char [] array (which is static -- size declaration at first).
how is it possible to keep the <string> dynamic, while being able to add elements on random positions (if possible). I know the strings have the ending char '', but there should still be something that would allow it to work. Okay, long story short, here is my example. I am trying to read from file rows of data. The first char on each row represents a normal char c. The rest of the row is a string which contains numbers (integers between 1 and 250) which represent the position at which the char c (read before) will have its location.
For example the input file:
#include <fstream> #include <deque> // for later use #include <string> #include <sstream> #include <algorithm> // for later use
[code].....
The program works perfectly, if instead of text.reserve(250); I use text.resize(250);. However, what is the difference between the two? I mean, why isn't reserve enough?
I am trying to create a simple palindrome program. I get the error string subscript out of range. I believe the error is either in the while or for loops.
#include <cctype> #include <string> #include <iostream> using namespace std; //cleans string, converts to lower bool cleanTolower(const string& s);
Im having a problem with my sneaky hangman game I feel like im really close just getting an error I can't fix. When I run it, it says something like string subscript out of range when I goggled it. it says im searching past the bounds of what it should be or something.
Also a dictionary.txt file is needed to run the program
code: [URL]
#include <iostream> #include <string> #include <fstream> #include <vector> #include <algorithm> #include <map> using namespace std; int guessesUsed = 0; int wordlength;
When i build this program i get no errors, however a message appears saying vector subscript out of range. What does this mean and what can i do to mkae my program work
I will try my best to describe this problem I am having because I am not sure if I can reproduce the error in a small code example as this is part of a large code project.
I have a plain std::vector which contains pointers to objects.
When attempting to delete the objects, even if I know for a fact that the std::vector has at least one object in it as shown by the debugger, I get the "Vector Subscript Out of Range" error.
I'll even do a range for loop like so:
for (auto & e : CurrentObjects) { delete e; }
And yet I still get the "Vector Subscript Out of Range" error. The destructor is never called for the object represented by "e" so I am not sure why I get the error.
I am trying to get this simple validation loop to work so that it only displays the error message when the input is outside the range 1-3. yet it always seems to display the message.
So there is suppose to be a constant that shows the total number of values to be shown in this range. The user enters two values, lets say userMin is -2 and userMax is 2, it's suppose to add 0.2 to -2 and so on until it reaches 2. It starts doing that up until it reaches -1.0, then it goes to -0.9, -0.7.... etc, It also goes beyond 2.
Code: #include <iostream> #include <iomanip> using namespace std; int main() { cout << fixed << setprecision(1); float userMin; float userMax;
I'm having problems with progress bar when using a big number in set range. For numbers below 50000 it works very well but for big numbers like 100.000 it doesn't work, it makes 2-3 rounds of animation
Code: int number= 50000; // 50k works well but if i put 100k it won't work (it will animate 2-3 rounds instead of complete one) progressbar1.SetRange(0, number); progressbar1.SetStep(1); for (int i = 0; i < number; ++i) { listcontrol1.InsertItem(i, _T("whatever")); progressbar1.StepIt(); }
Using Excel Automation in Visual Studio 2010 C++, how do I define a name? As a user of Excel, you can enter a name that then can be used in formulas to refer to a range of cells. The range changes as the user inserts columns or rows. My program has worked with various versions of Excel dating back to the early 2000's.
I have a bunch of classes derived from COleDispatchDriver: CXLApplication, CXLRange, CXLWorkbook, CXLWorkbooks, and CXLWorksheet that have many functions, but I have no documentation... How to define a named range using functions of these classes (probably CXLRange)?
Write a function named generateLotteryNumbers. The function is passed an int array of size 5. The function should generate 5 different lottery numbers in the range 1 to 50 inclusive and place the numbers in the array. The declaration is as follows:
Note that no data is passed in to the function. The array is used to return the function results. Thus the parameter is an OUT parameter. Do not display the result. Return the result.
Do not seed the random number generator inside the function. If you seed the random number generator inside the function and the function is called many times in the same second, your function will return the same results each time it is called.
I know how to generate the numbers in the specified range but I do not know how to test for duplicates. Here is the code I have so far:
Code: //This program will test the "generateLotteryNumbers" function #include <iostream> #include <cstdlib> #include <ctime> using namespace std; void generateLotteryNumbers (int lotteryNumbers[]);
[Code] ....
When I try to compile this, my compiler tells me that lines 41 and 46 require an array or pointer type.
I have a ULONGLONG variable uDate which express the number of dates starting from 0001-01-01, up to 9999-12-31. Now I want to convert it into a string like this
"yyyy-mm-dd"
However, the COleDateTime can only express the date from 100 to 9999, smaller than what I need. So are there any third-party classes or libraries that can express this. Or make the conversion from uDate to CString?
I want to define a range of exit codes in my application. These codes will be used as a return value of ExitInstance function. I want to know the exit codes availables (values not used for example by windows to inform about an other error). When I force to crash my application, I get some different error codes: 8148, 10176.
I've just recently started to learn C++, and I'm encountering some errors I can't seem to figure out.
InventoryItem.h:
Code: #pragma once class InventoryItem { public: InventoryItem(string name, int amount); ~InventoryItem(void); string getName(void); int getAmount(void);
To get a value I would always use setter and getter. Would it be much better (performance) to use vector subscript operator overloading? And does vector subscription operator overloading require a size for the vector?
What is the efficiency of the two assignments (line 1 and 2), i.e. (function calls, number of copies made, etc), also the Big O notation. I know there are function calls for retrieving the size of each string in order to produce a new buffer for the concatenated string...any difference between line 1 and 2 in terms of efficiency?
String s("Hello"); String t("There"); 1. s = s + t; 2. s += t;
I made a simple little program that takes text from the clipboard, and spits out all the lines I've copied one at a time (so my program can analyze it).
everything works perfectly, except, it spits it own in the wrong order, I want it to spit out from bottom to top. but currently it spits out the data from top to bottom. here is my code :
Code: #include <iostream> #include <Windows.h> #include <string> #include <sstream> using namespace std; int main() { HANDLE clip; // assigns the var. clip to hold a handle ID.
[Code] .....
I want this loop to run backwards! Like it say's what I want to work backwards. Where as I know how to flip a while loop like this: while(x < 5), how to flip a loop like the one I'm using. how I can do this?